t=int(input())
for i in range(t):
x=input()
y=input()
b=int(x.split()[0])
p=int(x.split()[1])
f=int(x.split()[2])
h=int(y.split()[0]) c=int(y.split()[1]) h1=0 c1=0 if b>=(p+f)*2:
h1=p
c1=f
elif h>=c and b>=p*2:
h1=p
c1=(b-p*2)//2
elif c>h and b>=f*2:
c1=f
h1=(b-f*2)//2
elif h>=c and b<p*2:
h1=b//2
c1=0
elif c>h and b<f*2:
c1=b//2
h1=0
print(h*h1+c*c1)
#include <bits/stdc++.h>
using namespace std;
int main () {
long long a,b,c,d,l,m,p,f,o,i,j,r,q[1000000],k,s,t,e,x,y,z,h;
char n[1000100],g[12345];
cin>>a;
while(a--) {
cin>>b>>p>>f>>h>>c;
x=0;
y=0;
b=(b-b%2)/2;
if(h>c) {
if(b>=p) {
x=p*h;
b=b-p;
if(b>=f) {
y=f*c;
}
else {
y=b*c;
}
}
else {
x=b*h;
y=0;
}
}
else {
if(b>=f) {
y=f*c;
b=b-f;
if(b>=p) {
x=p*h;
}
else {
x=b*h;
}
}
else {
y=b*c;
x=0;
}
}
cout<<x+y<<endl;
}
}
215. Kth Largest Element in an Array | 198. House Robber |
153. Find Minimum in Rotated Sorted Array | 150. Evaluate Reverse Polish Notation |
144. Binary Tree Preorder Traversal | 137. Single Number II |
130. Surrounded Regions | 129. Sum Root to Leaf Numbers |
120. Triangle | 102. Binary Tree Level Order Traversal |
96. Unique Binary Search Trees | 75. Sort Colors |
74. Search a 2D Matrix | 71. Simplify Path |
62. Unique Paths | 50. Pow(x, n) |
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |